﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Marmat.Foundation
{
    public interface IDataDictionaryManager
    {
        /// <summary>
        /// 获取数据字典/分组的列表。
        /// </summary>
        /// <returns></returns>
        IEnumerable<IDataDictionaryCategory> GetCategoryCollection();

        /// <summary>
        /// 创建分组。
        /// </summary>
        /// <param name="parent">父级的名称。</param>
        /// <param name="name">需要创建的名称。</param>
        IDataDictionaryCategory CreateCategory(string parent, string name);

        /// <summary>
        /// 创建字典。
        /// </summary>
        /// <param name="parent">父级的名称。</param>
        /// <param name="key">数据字典的key。</param>
        /// <param name="name">数据字典的名称。</param>
        IDataDictionaryCategory CreateDictionary(string parent, string key, string name);

        /// <summary>
        /// 更新数据字典的信息。
        /// </summary>
        /// <param name="key">数据字典的key</param>
        /// <param name="name">数据字典的名称</param>
        /// <param name="parent">数据字典的分组</param>
        void UpdateCategory(string key, string name, string parent);

        /// <summary>
        /// 删除数据字典。
        /// </summary>
        /// <param name="keyCollection">数据字典的key的集合</param>
        void DeleteCategory(string[] keyCollection);

        /// <summary>
        /// 为字典添加数据项。
        /// </summary>
        /// <param name="key">数据字典的key。</param>
        /// <param name="item">需要添加的数据对象。</param>
        void AddDictionaryItem(string key, IDataDictionaryItem item);

        /// <summary>
        /// 重命名数据字典的名称。
        /// </summary>
        /// <param name="id">数据字典的key</param>
        /// <param name="name">数据字典的名称</param>
        /// <param name="text">数据字典的文本</param>
        /// <param name="description">数据字典的描述</param>
        void RenameDictionaryItem(string id, string name, string text, string description);

        /// <summary>
        /// 删除数据字典的项。
        /// </summary>
        /// <param name="collection">数据字典的项的id的集合</param>
        void DeleteDictionaryItem(string[] collection);
    }
}
